package com.rf.richfitwheel.outbill.feignclient;


import com.rf.richfitwheel.admin.sys.model.Org;
import com.rf.richfitwheel.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

@FeignClient(name= "RICHFITWHEEL-ADMIN-SERVER/sys/org")
public interface SysOrgFeign {
    /**
     * @param
     * @功能描述: 获取当前登录人所属部门和机构信息, 用户必须在某个部门下
     * 格式:  机构id-机构编码-机构名称-部门id-部门编码-部门名称
     * @auther:
     * @return: List<OrgVO>
     */
    @PostMapping("/getSelfAndParentOrgInfo")
    @ResponseBody
    public R getSelfAndParentOrgInfo();

    /**
     * @param
     * @功能描述: 获取当前登录人所属企业及上级企业信息
     * @auther: 田炜俊
     * @return: EntAndUpperEntVo
     */
    @GetMapping("/getEntAndUpperEntInfo")
    public R getEntAndUpperEntInfo();

    /**
     * @param
     * @功能描述: 获取当前登录人及其下属各级企业编码
     * @auther: 田炜俊
     * @return: List<String>
     */
    @GetMapping("/getCurrentAndChildrenEntCodeList")
    public R getCurrentAndChildrenEntCodeList();

    @PostMapping("/getOrgAndLowerOrgInfoByOrgCode")
    public R getOrgAndLowerOrgInfoByOrgCode(@RequestBody Map<String,Object> params);

    @PostMapping("/getOrgVOById")
    public R getOrgVOById(@RequestBody String id);

    @PostMapping("/getCurrentAndBelowOrgCodeListByOrgCode")
    public R getCurrentAndBelowOrgCodeListByOrgCode(@RequestBody Map<String, Object> params);
    /**
     * 根据id获取下级单位
     * @param id
     * @param rank
     * @return
     */
    @GetMapping("/queryOrgsListExcludeDeptByParentId/{id}/{rank}")
    public List<Map<String,Object>> queryOrgsListExcludeDeptByParentId(@PathVariable("id") String id, @PathVariable("rank") String rank);

    /**
     * 获取下级单位不包含部门
     * @param id
     * @return
     */
    @GetMapping(value = "/queryOrgsExcludeDeptByParentId/{id}")
    public List<Map<String,Object>> queryOrgsExcludeDeptByParentId(@PathVariable("id") String id);

    /**
     * 获取所有机构list
     * @return
     */
    @PostMapping("/getAllOrgCompany")
    public List<Org> getAllOrgCompany();


    @GetMapping("/getOrgListByOrgName2/{orgName}")
    public R getOrgListByOrgName2(@PathVariable("orgName") String orgName);

    /**
     * 获取单位的各个部门
     * @param id
     * @return
     */
    @GetMapping(value = "/queryDeptByParentId/{id}")
    public List<Map<String,Object>> queryDeptByParentId(@PathVariable("id") String id);
    @GetMapping("/getOrgVOByOrgCode")
    public R getOrgVOByOrgCode(String appentno);
    /**
     * @param
     * @功能描述:根据单位编码查询本单位下的部门信息
     * @return: params
     */
    @PostMapping("/findOrgDeptList")
    public R findOrgDeptList(@RequestBody Map<String, Object>  params);

    /**
     * @param
     * @功能描述:根据单位编码查询单个org信息
     * @return: params
     */
    @PostMapping("/getOrgByOrgCode")
    public R getOrgByOrgCode(@RequestBody Map<String, Object>  params);
    /**
     * @param
     * @功能描述:根据单位编码查询单位下所有的机构
     * @return: params
     */
    @PostMapping("/getOrgByOrgCodeAll")
    public R getOrgByOrgCodeAll(@RequestBody Map<String, Object>  params);
    /**
     * @param
     * @功能描述:根据单位编码查询单位下所有的机构
     * @return: params
     */
    @PostMapping("/getOrgByOrgCodeDownAll")
    public R getOrgByOrgCodeDownAll(@RequestBody Map<String, Object>  params);
}
